// 你可以对 `defineStore()` 的返回值进行任意命名，但最好使用 store 的名字，同时以 `use` 开头且以 `Store` 结尾。(比如 `useUserStore`，`useCartStore`)
// 第一个参数是你的应用中 Store 的唯一 ID,第二个参数可接受两类值：Setup 函数或 Option 对象。
// 当前项目使用Setup 函数
// setup中：ref等于state  computed等于getters methods等于actions

import { defineStore } from "pinia";
import piniaPersistConfig from "./piniaPersist";
import { changeTheme } from "@/common/utils/mix";

const piniaNmae = "layout";

export const useLayoutStore = defineStore(
  piniaNmae,
  () => {
    const title = ref(global.title);
    const theme = ref(global.theme); // 主题色
    const sideTheme = ref(global.theme); // 侧边栏
    const topColorSet = ref(global.topColorSet); // top跟随主题色
    const tagsView = ref(global.tagsView); // tag显示
    const sidebarLogo = ref(global.sidebarLogo); // logo显示

    const sortDialogshow = ref(false); // 排序弹窗
    const commonMenu = ref([]); // 常用菜单

    // 修改主题色
    const changeThemeColor = (color) => {
      theme.value = color;
      changeTheme(color);
    };
    // 重置
    const restoreDefault = () => {
      title.value = global.title;
      theme.value = global.theme;
      sideTheme.value = global.theme;
      topColorSet.value = global.topColorSet;
      tagsView.value = global.tagsView;
      sidebarLogo.value = global.sidebarLogo;
    };
    return { title, theme, sideTheme, topColorSet, tagsView, sidebarLogo, restoreDefault, changeThemeColor, sortDialogshow, commonMenu };
  },
  {
    persist: piniaPersistConfig(piniaNmae, true)
  }
);
